home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN16.PAK / MONIKER.H < prev    next >
Text File  |  1997-05-06  |  9KB  |  248 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * moniker.h -   Moniker and related interfaces and APIs                                           *
  4. *                                                                             *
  5. *               OLE Version 2.0                                               *
  6. *                                                                             *
  7. \*****************************************************************************/
  8.  
  9. /* $Copyright: 1994$ */
  10.  
  11. #if !defined( _MONIKER_H_ )
  12. #define _MONIKER_H_
  13. #define __MONIKER_H
  14.  
  15. #define MK_E_CONNECTMANUALLY        MK_E_FIRST
  16. #define MK_E_EXCEEDEDDEADLINE       (MK_E_FIRST + 1)
  17. #define MK_E_NEEDGENERIC            (MK_E_FIRST + 2)
  18. #define MK_E_UNAVAILABLE            (MK_E_FIRST + 3)
  19. #define MK_E_SYNTAX                 (MK_E_FIRST + 4)
  20. #define MK_E_NOOBJECT               (MK_E_FIRST + 5)
  21. #define MK_E_INVALIDEXTENSION       (MK_E_FIRST + 6)
  22. #define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED (MK_E_FIRST + 7)
  23. #define MK_E_NOTBINDABLE            (MK_E_FIRST + 8)
  24. #define MK_E_NOTBOUND               (MK_E_FIRST + 9)
  25.                 // called IBindCtx->RevokeObjectBound for an
  26.                 // object which was not bound
  27. #define MK_E_CANTOPENFILE           (MK_E_FIRST + 10)
  28. #define MK_E_MUSTBOTHERUSER         (MK_E_FIRST + 11)
  29. #define MK_E_NOINVERSE              (MK_E_FIRST + 12)
  30. #define MK_E_NOSTORAGE              (MK_E_FIRST + 13)
  31. #define MK_E_NOPREFIX               (MK_E_FIRST + 14)
  32.  
  33.  
  34. // reserved                     MK_S_FIRST
  35. // reserved                     (MK_S_FIRST + 1)
  36. #define MK_S_REDUCED_TO_SELF    (MK_S_FIRST + 2)
  37. // reserved                     (MK_S_FIRST + 3)
  38. #define MK_S_ME                 (MK_S_FIRST + 4)
  39. #define MK_S_HIM                (MK_S_FIRST + 5)
  40. #define MK_S_US                 (MK_S_FIRST + 6)
  41. #define MK_S_MONIKERALREADYREGISTERED (MK_S_FIRST + 7)
  42.  
  43.  
  44. // bind options; variable sized
  45. typedef struct FARSTRUCT tagBIND_OPTS
  46. {
  47.     DWORD       cbStruct;       //  sizeof(BIND_OPTS)
  48.     DWORD       grfFlags;
  49.     DWORD       grfMode;
  50.     DWORD       dwTickCountDeadline;
  51. } BIND_OPTS, FAR* LPBIND_OPTS;
  52.  
  53.  
  54. // bind flags; controls binding; stored in bind options above
  55. typedef enum
  56. {
  57.     BIND_MAYBOTHERUSER = 1,
  58.     BIND_JUSTTESTEXISTENCE = 2
  59. } BIND_FLAGS;
  60.  
  61.  
  62. // system moniker types; returned from IsSystemMoniker.
  63. typedef enum tagMKSYS
  64. {
  65.     MKSYS_NONE = 0,
  66.     MKSYS_GENERICCOMPOSITE = 1,
  67.     MKSYS_FILEMONIKER = 2,
  68.     MKSYS_ANTIMONIKER = 3,
  69.     MKSYS_ITEMMONIKER = 4,
  70.     MKSYS_POINTERMONIKER = 5
  71. }MKSYS;
  72.  
  73.  
  74. // bit wise enum to control how much reduction takes place.
  75. typedef enum tagMKREDUCE
  76. {
  77.     MKRREDUCE_ONE           =   3<<16,
  78.     MKRREDUCE_TOUSER        =   2<<16,
  79.     MKRREDUCE_THROUGHUSER   =   1<<16,
  80.     MKRREDUCE_ALL           =   0
  81. } MKRREDUCE;
  82.  
  83.  
  84. #if defined(__cplusplus)
  85. interface IEnumMoniker;
  86. interface IRunningObjectTable;
  87. #else
  88. typedef interface IEnumMoniker IEnumMoniker;
  89. typedef interface IRunningObjectTable IRunningObjectTable;
  90. #endif
  91.  
  92. typedef       IEnumMoniker FAR* LPENUMMONIKER;
  93. typedef         IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE;
  94.  
  95.  
  96.  
  97. #undef  INTERFACE
  98. #define INTERFACE   IBindCtx
  99.  
  100. DECLARE_INTERFACE_(IBindCtx, IUnknown)
  101. {
  102.     // *** IUnknown methods ***
  103.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  104.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  105.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  106.  
  107.     // *** IBindCtx methods ***
  108.     STDMETHOD(RegisterObjectBound) (THIS_ LPUNKNOWN punk) PURE;
  109.     STDMETHOD(RevokeObjectBound) (THIS_ LPUNKNOWN punk) PURE;
  110.     STDMETHOD(ReleaseBoundObjects) (THIS) PURE;
  111.  
  112.     STDMETHOD(SetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE;
  113.     STDMETHOD(GetBindOptions) (THIS_ LPBIND_OPTS pbindopts) PURE;
  114.     STDMETHOD(GetRunningObjectTable) (THIS_ LPRUNNINGOBJECTTABLE  FAR*
  115.     pprot) PURE;
  116.     STDMETHOD(RegisterObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN punk) PURE;
  117.     STDMETHOD(GetObjectParam) (THIS_ LPSTR lpszKey, LPUNKNOWN FAR* ppunk) PURE;
  118.     STDMETHOD(EnumObjectParam) (THIS_ LPENUMSTRING FAR* ppenum) PURE;
  119.     STDMETHOD(RevokeObjectParam) (THIS_ LPSTR lpszKey) PURE;
  120. };
  121. typedef             IBindCtx FAR* LPBC;
  122. typedef         IBindCtx FAR* LPBINDCTX;
  123.  
  124.  
  125.  
  126. #undef  INTERFACE
  127. #define INTERFACE   IMoniker
  128.  
  129. DECLARE_INTERFACE_(IMoniker, IPersistStream)
  130. {
  131.     // *** IUnknown methods ***
  132.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  133.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  134.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  135.  
  136.     // *** IPersist methods ***
  137.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  138.  
  139.     // *** IPersistStream methods ***
  140.     STDMETHOD(IsDirty) (THIS) PURE;
  141.     STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
  142.     STDMETHOD(Save) (THIS_ LPSTREAM pStm,
  143.             BOOL fClearDirty) PURE;
  144.     STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR * pcbSize) PURE;
  145.  
  146.     // *** IMoniker methods ***
  147.     STDMETHOD(BindToObject) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  148.     REFIID riidResult, LPVOID FAR* ppvResult) PURE;
  149.     STDMETHOD(BindToStorage) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  150.     REFIID riid, LPVOID FAR* ppvObj) PURE;
  151.     STDMETHOD(Reduce) (THIS_ LPBC pbc, DWORD dwReduceHowFar, LPMONIKER FAR*
  152.     ppmkToLeft, LPMONIKER FAR * ppmkReduced) PURE;
  153.     STDMETHOD(ComposeWith) (THIS_ LPMONIKER pmkRight, BOOL fOnlyIfNotGeneric,
  154.     LPMONIKER FAR* ppmkComposite) PURE;
  155.     STDMETHOD(Enum) (THIS_ BOOL fForward, LPENUMMONIKER FAR* ppenumMoniker)
  156.     PURE;
  157.     STDMETHOD(IsEqual) (THIS_ LPMONIKER pmkOtherMoniker) PURE;
  158.     STDMETHOD(Hash) (THIS_ LPDWORD pdwHash) PURE;
  159.     STDMETHOD(IsRunning) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPMONIKER
  160.     pmkNewlyRunning) PURE;
  161.     STDMETHOD(GetTimeOfLastChange) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  162.     FILETIME FAR* pfiletime) PURE;
  163.     STDMETHOD(Inverse) (THIS_ LPMONIKER FAR* ppmk) PURE;
  164.     STDMETHOD(CommonPrefixWith) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR*
  165.     ppmkPrefix) PURE;
  166.     STDMETHOD(RelativePathTo) (THIS_ LPMONIKER pmkOther, LPMONIKER FAR*
  167.     ppmkRelPath) PURE;
  168.     STDMETHOD(GetDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  169.     LPSTR FAR* lplpszDisplayName) PURE;
  170.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  171.     LPSTR lpszDisplayName, ULONG FAR* pchEaten,
  172.     LPMONIKER FAR* ppmkOut) PURE;
  173.     STDMETHOD(IsSystemMoniker) (THIS_ LPDWORD pdwMksys) PURE;
  174. };
  175. typedef         IMoniker FAR* LPMONIKER;
  176.  
  177.  
  178. //  IRunningObjectTable::Register flags
  179. #define ROTFLAGS_REGISTRATIONKEEPSALIVE 1
  180.  
  181. #undef  INTERFACE
  182. #define INTERFACE   IRunningObjectTable
  183.  
  184. DECLARE_INTERFACE_(IRunningObjectTable, IUnknown)
  185. {
  186.     // *** IUnknown methods ***
  187.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  188.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  189.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  190.  
  191.     // *** IRunningObjectTable methods ***
  192.     STDMETHOD(Register) (THIS_ DWORD grfFlags, LPUNKNOWN punkObject,
  193.     LPMONIKER pmkObjectName, DWORD FAR * pdwRegister) PURE;
  194.     STDMETHOD(Revoke) (THIS_ DWORD dwRegister) PURE;
  195.     STDMETHOD(IsRunning) (THIS_ LPMONIKER pmkObjectName) PURE;
  196.     STDMETHOD(GetObject) (THIS_ LPMONIKER pmkObjectName,
  197.     LPUNKNOWN FAR* ppunkObject) PURE;
  198.     STDMETHOD(NoteChangeTime) (THIS_ DWORD dwRegister, FILETIME FAR * pfiletime) PURE;
  199.     STDMETHOD(GetTimeOfLastChange) (THIS_ LPMONIKER pmkObjectName, FILETIME FAR * pfiletime) PURE;
  200.     STDMETHOD(EnumRunning) (THIS_ LPENUMMONIKER FAR * ppenumMoniker ) PURE;
  201. };
  202. typedef         IRunningObjectTable FAR* LPRUNNINGOBJECTTABLE;
  203.  
  204.  
  205.  
  206. #undef  INTERFACE
  207. #define INTERFACE   IEnumMoniker
  208.  
  209. DECLARE_INTERFACE_(IEnumMoniker, IUnknown)
  210. {
  211.     // *** IUnknown methods ***
  212.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  213.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  214.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  215.  
  216.     // *** IEnumOleDataObject methods ***
  217.     STDMETHOD(Next) (THIS_ ULONG celt, LPMONIKER FAR* rgelt, ULONG FAR* pceltFetched) PURE;
  218.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  219.     STDMETHOD(Reset) (THIS) PURE;
  220.     STDMETHOD(Clone) (THIS_ IEnumMoniker FAR* FAR* ppenm) PURE;
  221. };
  222. typedef       IEnumMoniker FAR* LPENUMMONIKER;
  223.  
  224.  
  225.  
  226.  
  227. STDAPI  BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID FAR* ppvResult);
  228. STDAPI  MkParseDisplayName(LPBC pbc, LPSTR szUserName,
  229.         ULONG FAR * pchEaten, LPMONIKER FAR * ppmk);
  230. STDAPI  MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER
  231.         FAR* ppmkRelPath, BOOL fCalledFromMethod);
  232. STDAPI  MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther,
  233.         LPMONIKER FAR* ppmkCommon);
  234. STDAPI  CreateBindCtx(DWORD reserved, LPBC FAR* ppbc);
  235. STDAPI  CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest,
  236.     LPMONIKER FAR* ppmkComposite);
  237. STDAPI  GetClassFile (LPCSTR szFilename, CLSID FAR* pclsid);
  238.  
  239. STDAPI  CreateFileMoniker(LPSTR lpszPathName, LPMONIKER FAR* ppmk);
  240. STDAPI  CreateItemMoniker(LPSTR lpszDelim, LPSTR lpszItem,
  241.     LPMONIKER FAR* ppmk);
  242. STDAPI  CreateAntiMoniker(LPMONIKER FAR* ppmk);
  243. STDAPI  CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk);
  244.  
  245. STDAPI  GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot);
  246.  
  247. #endif  // _MONIKER_H_
  248.